/*---捕捉信号---*/
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
void handler(int signo)
{
  while(1)
  {
    printf("curr %d signo\n", signo);
    sleep(1);
  }
}

int main()
{
  struct sigaction act;
  memset(&act, 0, sizeof(act));
  
  act.sa_handler = handler;
  // act.sa_handler = SIG_IGN;
  // act.sa_handler = SIG_DFL;
 
  // 因为act.sa_mask的类型是sigset_t
  // 所以通过信号量函数进行控制
  // sa_mask用于记录需要额外屏蔽的信号
  // 将sa_mask清空，然后把3号信号添加到sa_mask中
  sigemptyset(&act.sa_mask);
  sigaddset(&act.sa_mask, 3);

  // 该函数和signal函数类似，都是用于捕获信号
  sigaction(2, &act, NULL);
  
  while(1)
  {
    printf("sherry\n");

    sleep(1);
  }
  return 0;
}
